package com.yangtao.framework.service;

import com.yangtao.framework.hibernate.BaseEntity;
import com.yangtao.framework.mapping.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.interceptor.TransactionInterceptor;

/**
 * <p>
 * 所有服务类的父类
 * </p>
 * <p>
 * 提供一些基础方法
 * </p>
 *
 * @author 杨涛
 * @version 1.0
 */
public class BaseService {
	/**
	 * 回滚事务，方便操作
	 */
	protected void rollback() {
		TransactionInterceptor.currentTransactionStatus().setRollbackOnly();
	}

	@Autowired
	protected Mapper mapper;

	/**
	 * 将Vo对象的属性copy到Po中 ，用于以下场合
	 * 对象新增
	 * 对象修改
	 *
	 * @param vo  页面上的参数
	 * @param po  数据库实体对象
	 * @param <T> 类型
	 */
	protected <T extends BaseEntity> void voToPo(T vo, T po) {
		mapper.map(vo, po);
	}

	/**
	 * 将Vo对象的属性copy到Po中 ，用于以下场合
	 * 对象新增
	 * 对象修改
	 *
	 * @param vo    页面上的参数
	 * @param po    数据库实体对象
	 * @param mapId 映射Id
	 * @param <T>   类型
	 */
	protected <T extends BaseEntity> void voToPo(T vo, T po, String mapId) {
		mapper.map(vo, po, mapId);
	}
}
